home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / byt86jun.arc / MIDI.ARC / LIST9.PAS < prev   
Encoding:
Pascal/Delphi Source File  |  1980-01-01  |  1.1 KB  |  42 lines

  1.  
  2. procedure quantize(var tdi,tdo:track_data_block; 
  3.            quantum:integer);
  4. var
  5.   in_time : real;        { Actual elapsed time,     }
  6.                 { input track data block   }
  7.   out_time : real;        { Actual elapsed time,     }
  8.                 { output track data block  }
  9.   etime : integer;        { Temporary storage for    }
  10.                 { adjustment of event time }
  11.   qround : integer;        { Rounding term           }
  12. begin
  13. reset_track_data(tdi);
  14. reset_track_data(tdo);
  15. qround:=quantum div 2;
  16. in_time:=0.0;
  17. out_time:=0.0;
  18. while not(tdi.edat) do
  19.   begin
  20.   next_track_event(tdi);
  21.   with tdi.curr do
  22.     begin
  23.     etime:=event.time;
  24.     { Adjust in/out time variance }    
  25.     etime:=etime - trunc(out_time-in_time);  
  26.     { quantize }
  27.     etime:=trunc(quantum * ((etime + qround) div quantum)); 
  28.     in_time:=in_time+event.time;
  29.     out_time:=out_time+etime;
  30.     event.time:=etime;
  31.     while event.time > MAX_TIMING_COUNT do
  32.       begin
  33.       store_track_event(tdo,OVFL_EVENT);
  34.       event.time:=event.time-MAX_TIMING_COUNT;
  35.       end;
  36.     store_track_event(tdo,tdi.curr);
  37.     end;
  38.   end;
  39. end;
  40.  
  41. ;
  42.       event.time:=event.time-MAX_TIMING_COU